<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE Trustworthy #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE KindSignatures #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# LANGUAGE TypeOperators #-}</span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-9"></span><span class="hs-pragma">{-# LANGUAGE ConstraintKinds #-}</span><span>
</span><span id="line-10"></span><span class="hs-pragma">{-# LANGUAGE ExistentialQuantification #-}</span><span>
</span><span id="line-11"></span><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><span id="line-12"></span><span class="hs-pragma">{-# LANGUAGE NoImplicitPrelude #-}</span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE MagicHash #-}</span><span>
</span><span id="line-14"></span><span class="hs-pragma">{-# LANGUAGE PolyKinds #-}</span><span>
</span><span id="line-15"></span><span>
</span><span id="line-16"></span><span class="hs-comment">{-|

GHC's @DataKinds@ language extension lifts data constructors, natural
numbers, and strings to the type level. This module provides the
primitives needed for working with type-level numbers (the 'Nat' kind)
and strings (the 'Symbol') kind. It also defines the 'TypeError' type
family, a feature that makes use of type-level strings to support user
defined type errors.

For now, this module is the API for working with type-level literals.
However, please note that it is a work in progress and is subject to change.
Once the design of the @DataKinds@ feature is more stable, this will be
considered only an internal GHC module, and the programmer interface for
working with type-level data will be defined in a separate library.

@since 4.6.0.0
-}</span><span>
</span><span id="line-33"></span><span>
</span><span id="line-34"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.TypeLits</span><span>
</span><span id="line-35"></span><span>  </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-comment">-- * Kinds</span></span><span>
</span><span id="line-36"></span><span>    </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Nat"><span class="hs-identifier">Nat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier">Symbol</span></a></span><span>  </span><span class="hs-comment">-- Both declared in GHC.Types in package ghc-prim</span><span>
</span><span id="line-37"></span><span>
</span><span id="line-38"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Linking type and value level</span></span><span>
</span><span id="line-39"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier">N.KnownNat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#natVal"><span class="hs-identifier">natVal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#natVal%27"><span class="hs-identifier">natVal'</span></a></span><span>
</span><span id="line-40"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier">KnownSymbol</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier">symbolVal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#symbolVal%27"><span class="hs-identifier">symbolVal'</span></a></span><span>
</span><span id="line-41"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#SomeNat"><span class="hs-identifier">N.SomeNat</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier">SomeSymbol</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-42"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#someNatVal"><span class="hs-identifier">someNatVal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#someSymbolVal"><span class="hs-identifier">someSymbolVal</span></a></span><span>
</span><span id="line-43"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#sameNat"><span class="hs-identifier">N.sameNat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#sameSymbol"><span class="hs-identifier">sameSymbol</span></a></span><span>
</span><span id="line-44"></span><span>
</span><span id="line-45"></span><span>
</span><span id="line-46"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Functions on type literals</span></span><span>
</span><span id="line-47"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#%3C%3D"><span class="hs-operator">(N.&lt;=)</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#%3C%3D%3F"><span class="hs-operator">(N.&lt;=?)</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#%2B"><span class="hs-operator">(N.+)</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#%2A"><span class="hs-operator">(N.*)</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#%5E"><span class="hs-operator">(N.^)</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#-"><span class="hs-operator">(N.-)</span></a></span><span>
</span><span id="line-48"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#Div"><span class="hs-identifier">N.Div</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#Mod"><span class="hs-identifier">N.Mod</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#Log2"><span class="hs-identifier">N.Log2</span></a></span><span>
</span><span id="line-49"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-identifier">AppendSymbol</span></a></span><span>
</span><span id="line-50"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#CmpNat"><span class="hs-identifier">N.CmpNat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#CmpSymbol"><span class="hs-identifier">CmpSymbol</span></a></span><span>
</span><span id="line-51"></span><span>
</span><span id="line-52"></span><span>  </span><span class="annot"><span class="hs-comment">-- * User-defined type errors</span></span><span>
</span><span id="line-53"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#TypeError"><span class="hs-identifier">TypeError</span></a></span><span>
</span><span id="line-54"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier">ErrorMessage</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-55"></span><span>
</span><span id="line-56"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-57"></span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Base.html"><span class="hs-identifier">GHC.Base</span></a></span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier">Eq</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier">Ord</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Ordering"><span class="hs-identifier">Ordering</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#otherwise"><span class="hs-identifier">otherwise</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-59"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#"><span class="hs-identifier">GHC.Types</span></a></span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Nat"><span class="hs-identifier">Nat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier">Symbol</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-60"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Num.html"><span class="hs-identifier">GHC.Num</span></a></span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-bignum/src/GHC.Num.Integer.html#Integer"><span class="hs-identifier">Integer</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Num.html#fromInteger"><span class="hs-identifier">fromInteger</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-61"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Base.html"><span class="hs-identifier">GHC.Base</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier">String</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-62"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Show.html"><span class="hs-identifier">GHC.Show</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier">Show</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-63"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Read.html"><span class="hs-identifier">GHC.Read</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Read.html#Read"><span class="hs-identifier">Read</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-64"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Real.html"><span class="hs-identifier">GHC.Real</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Real.html#toInteger"><span class="hs-identifier">toInteger</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-65"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#"><span class="hs-identifier">GHC.Prim</span></a></span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#magicDict"><span class="hs-identifier">magicDict</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Proxy%23"><span class="hs-identifier">Proxy#</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-66"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Maybe.html"><span class="hs-identifier">Data.Maybe</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier">Maybe</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-67"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Proxy.html"><span class="hs-identifier">Data.Proxy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Proxy.html#Proxy"><span class="hs-identifier">Proxy</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-68"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Type.Equality.html"><span class="hs-identifier">Data.Type.Equality</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Data.Type.Equality.html#%3A~%3A"><span class="hs-operator">(:~:)</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier">Refl</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-69"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Unsafe.Coerce.html"><span class="hs-identifier">Unsafe.Coerce</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier">unsafeCoerce</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.TypeNats.html"><span class="hs-identifier">GHC.TypeNats</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier">KnownNat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="GHC.TypeNats.html"><span class="hs-identifier">GHC.TypeNats</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">N</span></span><span>
</span><span id="line-73"></span><span>
</span><span id="line-74"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-75"></span><span>
</span><span id="line-76"></span><span class="hs-comment">-- | This class gives the string associated with a type-level symbol.</span><span>
</span><span id="line-77"></span><span class="hs-comment">-- There are instances of the class for every concrete literal: &quot;hello&quot;, etc.</span><span>
</span><span id="line-78"></span><span class="hs-comment">--</span><span>
</span><span id="line-79"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-80"></span><span class="hs-keyword">class</span><span> </span><span id="KnownSymbol"><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-var">KnownSymbol</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505827"><span class="annot"><a href="#local-6989586621679505827"><span class="hs-identifier hs-type">n</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-81"></span><span>  </span><span id="symbolSing"><span class="annot"><a href="GHC.TypeLits.html#symbolSing"><span class="hs-identifier hs-type">symbolSing</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505827"><span class="hs-identifier hs-type">n</span></a></span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-84"></span><span class="annot"><a href="GHC.TypeLits.html#natVal"><span class="hs-identifier hs-type">natVal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505839"><span class="annot"><a href="#local-6989586621679505839"><span class="hs-identifier hs-type">n</span></a></span></span><span> </span><span id="local-6989586621679505838"><span class="annot"><a href="#local-6989586621679505838"><span class="hs-identifier hs-type">proxy</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier hs-type">KnownNat</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505839"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505838"><span class="hs-identifier hs-type">proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505839"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-bignum/src/GHC.Num.Integer.html#Integer"><span class="hs-identifier hs-type">Integer</span></a></span><span>
</span><span id="line-85"></span><span id="natVal"><span class="annot"><span class="annottext">natVal :: forall (n :: Nat) (proxy :: Nat -&gt; *).
KnownNat n =&gt;
proxy n -&gt; Integer
</span><a href="GHC.TypeLits.html#natVal"><span class="hs-identifier hs-var hs-var">natVal</span></a></span></span><span> </span><span id="local-6989586621679505738"><span class="annot"><span class="annottext">proxy n
</span><a href="#local-6989586621679505738"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Natural -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">proxy n -&gt; Natural
forall (n :: Nat) (proxy :: Nat -&gt; *).
KnownNat n =&gt;
proxy n -&gt; Natural
</span><a href="GHC.TypeNats.html#natVal"><span class="hs-identifier hs-var">N.natVal</span></a></span><span> </span><span class="annot"><span class="annottext">proxy n
</span><a href="#local-6989586621679505738"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-86"></span><span>
</span><span id="line-87"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-88"></span><span class="annot"><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-type">symbolVal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505832"><span class="annot"><a href="#local-6989586621679505832"><span class="hs-identifier hs-type">n</span></a></span></span><span> </span><span id="local-6989586621679505831"><span class="annot"><a href="#local-6989586621679505831"><span class="hs-identifier hs-type">proxy</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505832"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505831"><span class="hs-identifier hs-type">proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505832"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-89"></span><span id="symbolVal"><span class="annot"><span class="annottext">symbolVal :: forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var hs-var">symbolVal</span></a></span></span><span> </span><span class="annot"><span class="annottext">proxy n
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">SSymbol n
forall (n :: Symbol). KnownSymbol n =&gt; SSymbol n
</span><a href="GHC.TypeLits.html#symbolSing"><span class="hs-identifier hs-var">symbolSing</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505832"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-90"></span><span>                </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span id="local-6989586621679505733"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505733"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505733"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-91"></span><span>
</span><span id="line-92"></span><span class="hs-comment">-- | @since 4.8.0.0</span><span>
</span><span id="line-93"></span><span class="annot"><a href="GHC.TypeLits.html#natVal%27"><span class="hs-identifier hs-type">natVal'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505826"><span class="annot"><a href="#local-6989586621679505826"><span class="hs-identifier hs-type">n</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier hs-type">KnownNat</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505826"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Proxy%23"><span class="hs-identifier hs-type">Proxy#</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505826"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-bignum/src/GHC.Num.Integer.html#Integer"><span class="hs-identifier hs-type">Integer</span></a></span><span>
</span><span id="line-94"></span><span id="natVal%27"><span class="annot"><span class="annottext">natVal' :: forall (n :: Nat). KnownNat n =&gt; Proxy# n -&gt; Integer
</span><a href="GHC.TypeLits.html#natVal%27"><span class="hs-identifier hs-var hs-var">natVal'</span></a></span></span><span> </span><span id="local-6989586621679505729"><span class="annot"><span class="annottext">Proxy# n
</span><a href="#local-6989586621679505729"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Natural -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy# n -&gt; Natural
forall (n :: Nat). KnownNat n =&gt; Proxy# n -&gt; Natural
</span><a href="GHC.TypeNats.html#natVal%27"><span class="hs-identifier hs-var">N.natVal'</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy# n
</span><a href="#local-6989586621679505729"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-95"></span><span>
</span><span id="line-96"></span><span class="hs-comment">-- | @since 4.8.0.0</span><span>
</span><span id="line-97"></span><span class="annot"><a href="GHC.TypeLits.html#symbolVal%27"><span class="hs-identifier hs-type">symbolVal'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505823"><span class="annot"><a href="#local-6989586621679505823"><span class="hs-identifier hs-type">n</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505823"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Proxy%23"><span class="hs-identifier hs-type">Proxy#</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505823"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-98"></span><span id="symbolVal%27"><span class="annot"><span class="annottext">symbolVal' :: forall (n :: Symbol). KnownSymbol n =&gt; Proxy# n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal%27"><span class="hs-identifier hs-var hs-var">symbolVal'</span></a></span></span><span> </span><span class="annot"><span class="annottext">Proxy# n
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">SSymbol n
forall (n :: Symbol). KnownSymbol n =&gt; SSymbol n
</span><a href="GHC.TypeLits.html#symbolSing"><span class="hs-identifier hs-var">symbolSing</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505823"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-99"></span><span>                </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span id="local-6989586621679505725"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505725"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505725"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-100"></span><span>
</span><span id="line-101"></span><span>
</span><span id="line-102"></span><span class="hs-comment">-- | This type represents unknown type-level symbols.</span><span>
</span><span id="line-103"></span><span class="hs-keyword">data</span><span> </span><span id="SomeSymbol"><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-var">SomeSymbol</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505814"><span class="annot"><a href="#local-6989586621679505814"><span class="hs-identifier hs-type">n</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505814"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span id="SomeSymbol"><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-var">SomeSymbol</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505814"><span class="hs-identifier hs-type">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-104"></span><span>                  </span><span class="hs-comment">-- ^ @since 4.7.0.0</span><span>
</span><span id="line-105"></span><span>
</span><span id="line-106"></span><span class="hs-comment">-- | Convert an integer into an unknown type-level natural.</span><span>
</span><span id="line-107"></span><span class="hs-comment">--</span><span>
</span><span id="line-108"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-109"></span><span class="annot"><a href="GHC.TypeLits.html#someNatVal"><span class="hs-identifier hs-type">someNatVal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-bignum/src/GHC.Num.Integer.html#Integer"><span class="hs-identifier hs-type">Integer</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.TypeNats.html#SomeNat"><span class="hs-identifier hs-type">N.SomeNat</span></a></span><span>
</span><span id="line-110"></span><span id="someNatVal"><span class="annot"><span class="annottext">someNatVal :: Integer -&gt; Maybe SomeNat
</span><a href="GHC.TypeLits.html#someNatVal"><span class="hs-identifier hs-var hs-var">someNatVal</span></a></span></span><span> </span><span id="local-6989586621679505723"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621679505723"><span class="hs-identifier hs-var">n</span></a></span></span><span>
</span><span id="line-111"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621679505723"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Integer -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3E%3D"><span class="hs-operator hs-var">&gt;=</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SomeNat -&gt; Maybe SomeNat
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Natural -&gt; SomeNat
</span><a href="GHC.TypeNats.html#someNatVal"><span class="hs-identifier hs-var">N.someNatVal</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Natural
forall a. Num a =&gt; Integer -&gt; a
</span><a href="GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621679505723"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-112"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe SomeNat
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-113"></span><span>
</span><span id="line-114"></span><span class="hs-comment">-- | Convert a string into an unknown type-level symbol.</span><span>
</span><span id="line-115"></span><span class="hs-comment">--</span><span>
</span><span id="line-116"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-117"></span><span class="annot"><a href="GHC.TypeLits.html#someSymbolVal"><span class="hs-identifier hs-type">someSymbolVal</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span>
</span><span id="line-118"></span><span id="someSymbolVal"><span class="annot"><span class="annottext">someSymbolVal :: String -&gt; SomeSymbol
</span><a href="GHC.TypeLits.html#someSymbolVal"><span class="hs-identifier hs-var hs-var">someSymbolVal</span></a></span></span><span> </span><span id="local-6989586621679505721"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505721"><span class="hs-identifier hs-var">n</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(KnownSymbol Any =&gt; Proxy Any -&gt; SomeSymbol)
-&gt; SSymbol Any -&gt; Proxy Any -&gt; SomeSymbol
forall (a :: Symbol) b.
(KnownSymbol a =&gt; Proxy a -&gt; b) -&gt; SSymbol a -&gt; Proxy a -&gt; b
</span><a href="GHC.TypeLits.html#withSSymbol"><span class="hs-identifier hs-var">withSSymbol</span></a></span><span> </span><span class="annot"><span class="annottext">KnownSymbol Any =&gt; Proxy Any -&gt; SomeSymbol
forall (n :: Symbol). KnownSymbol n =&gt; Proxy n -&gt; SomeSymbol
</span><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-var">SomeSymbol</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SSymbol Any
forall (s :: Symbol). String -&gt; SSymbol s
</span><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-var">SSymbol</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505721"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Proxy Any
forall {k} (t :: k). Proxy t
</span><a href="Data.Proxy.html#Proxy"><span class="hs-identifier hs-var">Proxy</span></a></span><span>
</span><span id="line-119"></span><span class="hs-pragma">{-# NOINLINE</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#someSymbolVal"><span class="hs-pragma hs-type">someSymbolVal</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-120"></span><span class="hs-comment">-- For details see Note [NOINLINE someNatVal] in &quot;GHC.TypeNats&quot;</span><span>
</span><span id="line-121"></span><span class="hs-comment">-- The issue described there applies to `someSymbolVal` as well.</span><span>
</span><span id="line-122"></span><span>
</span><span id="line-123"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-124"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679505714"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier hs-type">Eq</span></a></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-125"></span><span>  </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span> </span><span id="local-6989586621679505711"><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505711"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679505710"><span class="annot"><span class="annottext">== :: SomeSymbol -&gt; SomeSymbol -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></a></span></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span> </span><span id="local-6989586621679505702"><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505702"><span class="hs-identifier hs-var">y</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Proxy n -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505711"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var">==</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505702"><span class="hs-identifier hs-var">y</span></a></span><span>
</span><span id="line-126"></span><span>
</span><span id="line-127"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-128"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679505687"><span id="local-6989586621679505689"><span id="local-6989586621679505691"><span id="local-6989586621679505693"><span id="local-6989586621679505695"><span id="local-6989586621679505697"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier hs-type">Ord</span></a></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-129"></span><span>  </span><span id="local-6989586621679505685"><span class="annot"><span class="annottext">compare :: SomeSymbol -&gt; SomeSymbol -&gt; Ordering
</span><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-identifier hs-var hs-var hs-var hs-var">compare</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span> </span><span id="local-6989586621679505682"><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505682"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span> </span><span id="local-6989586621679505674"><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505674"><span class="hs-identifier hs-var">y</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-identifier hs-var">compare</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy n -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505682"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy n -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505674"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-130"></span><span>
</span><span id="line-131"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-132"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679505669"><span id="local-6989586621679505671"><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-133"></span><span>  </span><span id="local-6989586621679505667"><span class="annot"><span class="annottext">showsPrec :: Int -&gt; SomeSymbol -&gt; ShowS
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">showsPrec</span></a></span></span><span> </span><span id="local-6989586621679505665"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679505665"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span><span> </span><span id="local-6989586621679505658"><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505658"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; String -&gt; ShowS
forall a. Show a =&gt; Int -&gt; a -&gt; ShowS
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679505665"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy n -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy n
</span><a href="#local-6989586621679505658"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-134"></span><span>
</span><span id="line-135"></span><span class="hs-comment">-- | @since 4.7.0.0</span><span>
</span><span id="line-136"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679505651"><span id="local-6989586621679505653"><span id="local-6989586621679505655"><span class="annot"><a href="GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SomeSymbol"><span class="hs-identifier hs-type">SomeSymbol</span></a></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-137"></span><span>  </span><span id="local-6989586621679505645"><span class="annot"><span class="annottext">readsPrec :: Int -&gt; ReadS SomeSymbol
</span><a href="GHC.Read.html#readsPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">readsPrec</span></a></span></span><span> </span><span id="local-6989586621679505643"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679505643"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span id="local-6989586621679505642"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505642"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SomeSymbol
</span><a href="GHC.TypeLits.html#someSymbolVal"><span class="hs-identifier hs-var">someSymbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505641"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505640"><span class="hs-identifier hs-var">ys</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505641"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505641"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621679505640"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505640"><span class="hs-identifier hs-var">ys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Int -&gt; ReadS String
forall a. Read a =&gt; Int -&gt; ReadS a
</span><a href="GHC.Read.html#readsPrec"><span class="hs-identifier hs-var">readsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621679505643"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679505642"><span class="hs-identifier hs-var">xs</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-140"></span><span>
</span><span id="line-141"></span><span class="hs-comment">-- | Comparison of type-level symbols, as a function.</span><span>
</span><span id="line-142"></span><span class="hs-comment">--</span><span>
</span><span id="line-143"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-144"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="CmpSymbol"><span class="annot"><a href="GHC.TypeLits.html#CmpSymbol"><span class="hs-identifier hs-var">CmpSymbol</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505639"><span class="annot"><a href="#local-6989586621679505639"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505638"><span class="annot"><a href="#local-6989586621679505638"><span class="hs-identifier hs-type">n</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Ordering"><span class="hs-identifier hs-type">Ordering</span></a></span><span>
</span><span id="line-145"></span><span>
</span><span id="line-146"></span><span class="hs-comment">-- | Concatenation of type-level symbols.</span><span>
</span><span id="line-147"></span><span class="hs-comment">--</span><span>
</span><span id="line-148"></span><span class="hs-comment">-- @since 4.10.0.0</span><span>
</span><span id="line-149"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="AppendSymbol"><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-identifier hs-var">AppendSymbol</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505637"><span class="annot"><a href="#local-6989586621679505637"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-glyph">::</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505636"><span class="annot"><a href="#local-6989586621679505636"><span class="hs-identifier hs-type">n</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span>
</span><span id="line-150"></span><span>
</span><span id="line-151"></span><span class="hs-comment">-- | A description of a custom type error.</span><span>
</span><span id="line-152"></span><span class="hs-keyword">data</span><span> </span><span class="hs-comment">{-kind-}</span><span> </span><span id="ErrorMessage"><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-var">ErrorMessage</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Text"><span class="annot"><a href="GHC.TypeLits.html#Text"><span class="hs-identifier hs-var">Text</span></a></span></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span>
</span><span id="line-153"></span><span>                             </span><span class="hs-comment">-- ^ Show the text as is.</span><span>
</span><span id="line-154"></span><span>
</span><span id="line-155"></span><span>                           </span><span class="hs-glyph">|</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679505635"><span class="annot"><a href="#local-6989586621679505635"><span class="hs-identifier hs-type">t</span></a></span></span><span class="hs-operator">.</span><span> </span><span id="ShowType"><span class="annot"><a href="GHC.TypeLits.html#ShowType"><span class="hs-identifier hs-var">ShowType</span></a></span></span><span> </span><span class="annot"><a href="#local-6989586621679505635"><span class="hs-identifier hs-type">t</span></a></span><span>
</span><span id="line-156"></span><span>                             </span><span class="hs-comment">-- ^ Pretty print the type.</span><span>
</span><span id="line-157"></span><span>                             </span><span class="hs-comment">-- @ShowType :: k -&gt; ErrorMessage@</span><span>
</span><span id="line-158"></span><span>
</span><span id="line-159"></span><span>                           </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-type">ErrorMessage</span></a></span><span> </span><span id="%3A%3C%3E%3A"><span class="annot"><a href="GHC.TypeLits.html#%3A%3C%3E%3A"><span class="hs-operator hs-var">:&lt;&gt;:</span></a></span></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-type">ErrorMessage</span></a></span><span>
</span><span id="line-160"></span><span>                             </span><span class="hs-comment">-- ^ Put two pieces of error message next</span><span>
</span><span id="line-161"></span><span>                             </span><span class="hs-comment">-- to each other.</span><span>
</span><span id="line-162"></span><span>
</span><span id="line-163"></span><span>                           </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-type">ErrorMessage</span></a></span><span> </span><span id="%3A%24%24%3A"><span class="annot"><a href="GHC.TypeLits.html#%3A%24%24%3A"><span class="hs-operator hs-var">:$$:</span></a></span></span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-type">ErrorMessage</span></a></span><span>
</span><span id="line-164"></span><span>                             </span><span class="hs-comment">-- ^ Stack two pieces of error message on top</span><span>
</span><span id="line-165"></span><span>                             </span><span class="hs-comment">-- of each other.</span><span>
</span><span id="line-166"></span><span>
</span><span id="line-167"></span><span class="hs-keyword">infixl</span><span> </span><span class="hs-number">5</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#%3A%24%24%3A"><span class="hs-operator hs-type">:$$:</span></a></span><span>
</span><span id="line-168"></span><span class="hs-keyword">infixl</span><span> </span><span class="hs-number">6</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#%3A%3C%3E%3A"><span class="hs-operator hs-type">:&lt;&gt;:</span></a></span><span>
</span><span id="line-169"></span><span>
</span><span id="line-170"></span><span class="hs-comment">-- | The type-level equivalent of 'Prelude.error'.</span><span>
</span><span id="line-171"></span><span class="hs-comment">--</span><span>
</span><span id="line-172"></span><span class="hs-comment">-- The polymorphic kind of this type allows it to be used in several settings.</span><span>
</span><span id="line-173"></span><span class="hs-comment">-- For instance, it can be used as a constraint, e.g. to provide a better error</span><span>
</span><span id="line-174"></span><span class="hs-comment">-- message for a non-existent instance,</span><span>
</span><span id="line-175"></span><span class="hs-comment">--</span><span>
</span><span id="line-176"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-177"></span><span class="hs-comment">-- -- in a context</span><span>
</span><span id="line-178"></span><span class="hs-comment">-- instance TypeError (Text &quot;Cannot 'Show' functions.&quot; :$$:</span><span>
</span><span id="line-179"></span><span class="hs-comment">--                     Text &quot;Perhaps there is a missing argument?&quot;)</span><span>
</span><span id="line-180"></span><span class="hs-comment">--       =&gt; Show (a -&gt; b) where</span><span>
</span><span id="line-181"></span><span class="hs-comment">--     showsPrec = error &quot;unreachable&quot;</span><span>
</span><span id="line-182"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-183"></span><span class="hs-comment">--</span><span>
</span><span id="line-184"></span><span class="hs-comment">-- It can also be placed on the right-hand side of a type-level function</span><span>
</span><span id="line-185"></span><span class="hs-comment">-- to provide an error for an invalid case,</span><span>
</span><span id="line-186"></span><span class="hs-comment">--</span><span>
</span><span id="line-187"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-188"></span><span class="hs-comment">-- type family ByteSize x where</span><span>
</span><span id="line-189"></span><span class="hs-comment">--    ByteSize Word16   = 2</span><span>
</span><span id="line-190"></span><span class="hs-comment">--    ByteSize Word8    = 1</span><span>
</span><span id="line-191"></span><span class="hs-comment">--    ByteSize a        = TypeError (Text &quot;The type &quot; :&lt;&gt;: ShowType a :&lt;&gt;:</span><span>
</span><span id="line-192"></span><span class="hs-comment">--                                   Text &quot; is not exportable.&quot;)</span><span>
</span><span id="line-193"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-194"></span><span class="hs-comment">--</span><span>
</span><span id="line-195"></span><span class="hs-comment">-- @since 4.9.0.0</span><span>
</span><span id="line-196"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="TypeError"><span class="annot"><a href="GHC.TypeLits.html#TypeError"><span class="hs-identifier hs-var">TypeError</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505634"><span id="local-6989586621679505633"><span class="annot"><a href="#local-6989586621679505633"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#ErrorMessage"><span class="hs-identifier hs-type">ErrorMessage</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679505634"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-197"></span><span>
</span><span id="line-198"></span><span>
</span><span id="line-199"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-200"></span><span>
</span><span id="line-201"></span><span class="hs-comment">-- | We either get evidence that this function was instantiated with the</span><span>
</span><span id="line-202"></span><span class="hs-comment">-- same type-level symbols, or 'Nothing'.</span><span>
</span><span id="line-203"></span><span class="hs-comment">--</span><span>
</span><span id="line-204"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-205"></span><span id="local-6989586621679505792"><span id="local-6989586621679505793"><span id="local-6989586621679505794"><span id="local-6989586621679505795"><span class="annot"><a href="GHC.TypeLits.html#sameSymbol"><span class="hs-identifier hs-type">sameSymbol</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505795"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505794"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><span id="line-206"></span><span>              </span><span class="annot"><a href="#local-6989586621679505793"><span class="hs-identifier hs-type">proxy1</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505795"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505792"><span class="hs-identifier hs-type">proxy2</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505794"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679505795"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Data.Type.Equality.html#%3A~%3A"><span class="hs-operator hs-type">:~:</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505794"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span></span></span></span></span><span>
</span><span id="line-207"></span><span id="sameSymbol"><span class="annot"><span class="annottext">sameSymbol :: forall (a :: Symbol) (b :: Symbol) (proxy1 :: Symbol -&gt; *)
       (proxy2 :: Symbol -&gt; *).
(KnownSymbol a, KnownSymbol b) =&gt;
proxy1 a -&gt; proxy2 b -&gt; Maybe (a :~: b)
</span><a href="GHC.TypeLits.html#sameSymbol"><span class="hs-identifier hs-var hs-var">sameSymbol</span></a></span></span><span> </span><span id="local-6989586621679505626"><span class="annot"><span class="annottext">proxy1 a
</span><a href="#local-6989586621679505626"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679505625"><span class="annot"><span class="annottext">proxy2 b
</span><a href="#local-6989586621679505625"><span class="hs-identifier hs-var">y</span></a></span></span><span>
</span><span id="line-208"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">proxy1 a -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">proxy1 a
</span><a href="#local-6989586621679505626"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var">==</span></a></span><span> </span><span class="annot"><span class="annottext">proxy2 b -&gt; String
forall (n :: Symbol) (proxy :: Symbol -&gt; *).
KnownSymbol n =&gt;
proxy n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal"><span class="hs-identifier hs-var">symbolVal</span></a></span><span> </span><span class="annot"><span class="annottext">proxy2 b
</span><a href="#local-6989586621679505625"><span class="hs-identifier hs-var">y</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a :~: b) -&gt; Maybe (a :~: b)
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Any :~: Any) -&gt; a :~: b
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">Any :~: Any
forall {k} (a :: k). a :~: a
</span><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier hs-var">Refl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-209"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (a :~: b)
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-210"></span><span>
</span><span id="line-211"></span><span class="hs-comment">--------------------------------------------------------------------------------</span><span>
</span><span id="line-212"></span><span class="hs-comment">-- PRIVATE:</span><span>
</span><span id="line-213"></span><span>
</span><span id="line-214"></span><span class="hs-keyword">newtype</span><span> </span><span id="SSymbol"><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-var">SSymbol</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679505813"><span class="annot"><a href="#local-6989586621679505813"><span class="hs-identifier hs-type">s</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span id="SSymbol"><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-var">SSymbol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-215"></span><span>
</span><span id="line-216"></span><span class="hs-keyword">data</span><span> </span><span id="WrapS"><span class="annot"><a href="GHC.TypeLits.html#WrapS"><span class="hs-identifier hs-var">WrapS</span></a></span></span><span> </span><span id="local-6989586621679505779"><span class="annot"><a href="#local-6989586621679505779"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span id="local-6989586621679505778"><span class="annot"><a href="#local-6989586621679505778"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="WrapS"><span class="annot"><a href="GHC.TypeLits.html#WrapS"><span class="hs-identifier hs-var">WrapS</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505779"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505779"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505778"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-217"></span><span>
</span><span id="line-218"></span><span class="hs-comment">-- See Note [magicDictId magic] in &quot;basicType/MkId.hs&quot;</span><span>
</span><span id="line-219"></span><span id="local-6989586621679505815"><span id="local-6989586621679505816"><span class="annot"><a href="GHC.TypeLits.html#withSSymbol"><span class="hs-identifier hs-type">withSSymbol</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505816"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505816"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505815"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-220"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#SSymbol"><span class="hs-identifier hs-type">SSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505816"><span class="hs-identifier hs-type">a</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Proxy.html#Proxy"><span class="hs-identifier hs-type">Proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679505816"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679505815"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-221"></span><span id="withSSymbol"><span class="annot"><span class="annottext">withSSymbol :: forall (a :: Symbol) b.
(KnownSymbol a =&gt; Proxy a -&gt; b) -&gt; SSymbol a -&gt; Proxy a -&gt; b
</span><a href="GHC.TypeLits.html#withSSymbol"><span class="hs-identifier hs-var hs-var">withSSymbol</span></a></span></span><span> </span><span id="local-6989586621679505623"><span class="annot"><span class="annottext">KnownSymbol a =&gt; Proxy a -&gt; b
</span><a href="#local-6989586621679505623"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679505622"><span class="annot"><span class="annottext">SSymbol a
</span><a href="#local-6989586621679505622"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679505621"><span class="annot"><span class="annottext">Proxy a
</span><a href="#local-6989586621679505621"><span class="hs-identifier hs-var">y</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WrapS a b -&gt; SSymbol a -&gt; Proxy a -&gt; b
forall a. a
</span><a href="../../ghc-prim/src/GHC.Prim.html#magicDict"><span class="hs-identifier hs-var">magicDict</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(KnownSymbol a =&gt; Proxy a -&gt; b) -&gt; WrapS a b
forall (a :: Symbol) b.
(KnownSymbol a =&gt; Proxy a -&gt; b) -&gt; WrapS a b
</span><a href="GHC.TypeLits.html#WrapS"><span class="hs-identifier hs-var">WrapS</span></a></span><span> </span><span class="annot"><span class="annottext">KnownSymbol a =&gt; Proxy a -&gt; b
</span><a href="#local-6989586621679505623"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SSymbol a
</span><a href="#local-6989586621679505622"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy a
</span><a href="#local-6989586621679505621"><span class="hs-identifier hs-var">y</span></a></span><span>
</span><span id="line-222"></span></pre></body></html>